package com.sherlocky.learning.java11.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * <p>增强的File API</p>
 * <p>InputStream.transferTo()</p>
 *
 * @author: zhangcx
 * @date: 2019/9/26 16:48
 */
public class FileSample {
    public static void main(String[] args) throws Exception {
        String filePath = "hello.txt";
        String text = "Hello biezhi.";

        // 写入文本
        Files.writeString(Paths.get(filePath), text);

        // 读取文本
        String readText = Files.readString(Paths.get(filePath));
        System.out.println(text.equals(readText));

        // 删除文本
        Files.delete(Paths.get(filePath));

        /**
         * InputStream 终于有了一个非常有用的方法：transferTo，
         * 可以用来将数据直接传输到 OutputStream，这是在处理原始数据流时非常常见的一种用法。
         */
        var inputStream = new FileInputStream(new File("./README.md"));
        var javastack = File.createTempFile("InputStreamSample", ".txt");
        System.out.println(javastack.getAbsolutePath());
        try (var outputStream = new FileOutputStream(javastack)) {
            inputStream.transferTo(outputStream);
        }
    }
}
